import env from './env.js'

// 封装请求方法
export default function request(options) {
  // 设置默认超时时间
  options.timeout = options.timeout || 10000;
  
  // 拼接基础地址 - 使用独立函数处理URL
  options.url = buildFullUrl(options.url);
  
  // 设置请求头
  options.header = {
    'Content-Type': 'application/json',
    ...options.header
  };
  
  // 添加token（如果有）
  const token = uni.getStorageSync('token');
  if (token) {
    options.header.Authorization = `Bearer ${token}`;
  }
  
  console.log('发起请求:', options);
  
  return new Promise((resolve, reject) => {
    uni.request({
      ...options,
      success(res) {
        console.log('请求成功:', res);
        // 特别处理401错误
        if (res.statusCode === 401) {
          uni.showToast({
            title: '认证失败，请重新登录',
            icon: 'none'
          });
          // 清除本地存储的用户信息
          uni.removeStorageSync('userInfo');
          uni.removeStorageSync('token');
          // 跳转到登录页面
          uni.redirectTo({ url: '/pages/home/home' });
        }
        resolve(res.data);
      },
      fail(err) {
        console.error('请求失败:', err);
        uni.showToast({
          title: '网络错误',
          icon: 'none'
        });
        reject(err);
      }
    });
  });
}

/**
 * 构建完整URL的独立函数
 * @param {string} url - 原始URL
 * @returns {string} 完整的URL
 */
function buildFullUrl(url) {
  // 如果已经是完整URL，则直接返回
  if (url.startsWith('http://') || url.startsWith('https://')) {
    return url;
  }
  
  // 工单相关接口使用workOrderBaseUrl
  if (url.startsWith('/api/workOrderInfo') || 
      url.startsWith('/api/workOrderEvaluation') || 
      url.startsWith('/api/employeeRatingStars') ||
      url.startsWith('/api/employeeCommissionInfo')) {
    return env.workOrderBaseUrl + url;
  }
  
  // 其他接口使用baseUrl
  return env.baseUrl + url;
}